home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / OBJPPSTR.C < prev    next >
C/C++ Source or Header  |  1993-01-17  |  1KB  |  59 lines

  1. /**************************************************************************
  2.  * OBJPPSTR.C - Return a pointer to an object's string pointer.
  3.  *************************************************************************/
  4.  
  5. #include "gemfintl.h"
  6.  
  7. char **obj_ppstring(pobj)
  8.     register OBJECT *pobj;
  9. {
  10.     register short    ob_type;
  11.     register _Ob_spec_t *pspec;
  12.  
  13.     ob_type = pobj->ob_type & 0x00FF;
  14.     pspec    = &pobj->_Ob_spec;
  15.  
  16.     if (pobj->ob_flags & INDIRECT) {
  17.         pspec = (_Ob_spec_t *)(*pspec);
  18.     }
  19.  
  20.     if (ob_type == G_USERDEF) {
  21.         register XUSERBLK *pxub = (XUSERBLK *)(*pspec);
  22.         if (pxub->ub_self == pxub) {
  23.             ob_type = pxub->ob_type;
  24.             pspec    = &pxub->ob_spec;
  25.         }
  26.     }
  27.  
  28.     switch (ob_type) {
  29.       case G_ICON:
  30.         pspec = (_Ob_spec_t *)(*pspec);
  31.         pspec = &pspec[2];        /* add 12-byte offset to pointer */
  32.         break;
  33.       case G_TEXT:
  34.       case G_BOXTEXT:
  35.       case G_FTEXT:
  36.       case G_FBOXTEXT:
  37.         pspec = (_Ob_spec_t *)(*pspec);
  38.         break;
  39.     }
  40.  
  41.     return (char **)pspec;
  42. }
  43.  
  44. char *obj_gstring(ptree, obj)
  45.     OBJECT *ptree;
  46.     short    obj;
  47. {
  48.     return *(obj_ppstring(&ptree[obj]));
  49. }
  50.  
  51. void obj_sstring(ptree, obj, newstring)
  52.     OBJECT *ptree;
  53.     short    obj;
  54.     char    *newstring;
  55. {
  56.     *(obj_ppstring(&ptree[obj])) = newstring;
  57. }
  58.  
  59.